package cn.tedu.antcolony.passport.service;

import cn.tedu.antcolony.passport.pojo.entity.AdminLoginLog;
import cn.tedu.antcolony.passport.pojo.param.AdminLoginTime;
import cn.tedu.antcolony.passport.pojo.vo.AdminLoginLogCountVo;
import cn.tedu.antcolony.passport.pojo.vo.AdminLoginLogVo;
import cn.tedu.antcolonycommons.pojo.vo.PageData;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 登录日志接口
 */
public interface IAdminLoginLogService {
    /**
     * 添加管理员登录日志
     * @param adminLoginLog
     */
    void addNewAdminLoginLog(AdminLoginLog adminLoginLog);


    /**
     * 分页查询登录日志列表
     * @param pageNum
     * @param
     * @return
     */
    PageData<AdminLoginLogVo> listAdminLoginLog(Integer pageNum);


    /**
     * 查询登录管理员登录次数排行榜
     * @return
     */
    List<AdminLoginLogCountVo> adminLoginCount();


    /**
     * 根据时间前后查询管理员登录日志
     * @param pageNum
     * @param adminLoginTime
     * @return
     */
    PageData<AdminLoginLogVo> listAdminLoginLogByTimeBetween(Integer pageNum, AdminLoginTime adminLoginTime);


    /**
     * 根据输入时间之后查询登录日志
     * @param pageNum
     * @param startTime
     * @return
     */
    PageData<AdminLoginLogVo> listAdminLoginLogByTimeStartTimeAfter(Integer pageNum, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime );


    /**
     * 根据输入时间之前登录日志
     * @param pageNum
     * @param endTime
     * @return
     */
    PageData<AdminLoginLogVo> listAdminLoginLogByTimeEndTimeBefore(Integer pageNum, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime);
}
